#include "ModuleLoadCLUT.h"

void ModuleLoadCLUT::init(QCVModuleHandlerInterface * parent)
{
	this->parent=parent;
	parent->setAutoProcess(false);
	win=new QWidget();
  layout=new QVBoxLayout(win);

	pb_load_CLUT=new QPushButton(tr("Charger une CLUT"),win);
	pb_send_CLUT=new QPushButton(tr("Envoyer"),win);
	le_name=new QLineEdit(win);

	layout->addWidget(pb_load_CLUT);
	layout->addWidget(pb_send_CLUT);
	layout->addWidget(le_name);

	connect(pb_load_CLUT,SIGNAL(clicked()),this,SLOT(s_load_CLUT()));
	connect(pb_send_CLUT,SIGNAL(clicked()),this,SLOT(s_send_CLUT()));
}
////////////////////////////////////////////////////////////////////////////////
void ModuleLoadCLUT::free()
{
	delete win;
}
////////////////////////////////////////////////////////////////////////////////
cv::Mat & ModuleLoadCLUT::process()
{
	//n'est jamais executée
	std::cout<<"Erreur ModuleLoadCLUT : La fonction process ne doit pas etre executée\n";
}
////////////////////////////////////////////////////////////////////////////////
void ModuleLoadCLUT::setInput(int n,const cv::Mat & m)
{
	if(n==0)
	{	
		
	}
}
////////////////////////////////////////////////////////////////////////////////
QWidget* ModuleLoadCLUT::widget()
{
	return win;
}
////////////////////////////////////////////////////////////////////////////////
QString ModuleLoadCLUT::getName()
{
	return tr("Charger CLUT");
}
////////////////////////////////////////////////////////////////////////////////
int ModuleLoadCLUT::nbInputs()
{
	return 0;
}
////////////////////////////////////////////////////////////////////////////////
bool ModuleLoadCLUT::setParams(QString params)
{
	QStringList list_params=params.split(";");
		
	if(list_params.size()==1)
	{
		return true;
	}
	else
	{
		return false;
	}	
}
////////////////////////////////////////////////////////////////////////////////
QString ModuleLoadCLUT::getParams()
{
	return tr("no_param");
}

QCVModuleInterface * ModuleLoadCLUT::clone()
{
	return new ModuleLoadCLUT;
}

////////////////////////////////////////////////////////////////////////////////
QString ModuleLoadCLUT::help(int id)
{
	if(id==-2)
	{
		return tr("Permet de Charger une CLUT");
	}
	else if(id==-1)
	{
		return tr("clut");
	}
	else
	{
		return tr("erreur");
	}
}
////////////////////////////////////////////////////////////////////////////////
void ModuleLoadCLUT::s_load_CLUT()
{
	QString filename=QFileDialog::getOpenFileName(NULL,"Ouvrir une CLUT","data","*.txt");
	if(!filename.isEmpty())
	{
		if(!loadCLUT(filename,clut))
		{
			QMessageBox::information(NULL,"Erreur ModuleLoadCLUT",trUtf8("La CLUT n'a pas le type adéquate"));
		}
		else
		{
			le_name->setText(filename);
		}
	}
}
////////////////////////////////////////////////////////////////////////////////
void ModuleLoadCLUT::s_send_CLUT()
{
	if(!clut.empty())
	{
		parent->forceOutput(clut);
	}
	else
	{
		QMessageBox::information(NULL,"Erreur ModuleLoadCLUT",trUtf8("Il faut d'abord charger la CLUT"));
	}
}
////////////////////////////////////////////////////////////////////////////////
Q_EXPORT_PLUGIN2(ModuleLoadCLUT_plugin,ModuleLoadCLUT);  
